package top.infopub.mgr.mkt.dao;

import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;
import top.infopub.dto.mkt.PlotDetailDto;
import top.infopub.generic.GenericDao;
import top.infopub.mgr.mkt.domain.ProjectDomain;
import top.infopub.mgr.mkt.domain.SetupProDomain;
import top.infopub.mgr.mkt.vo.CollectProjectVo;
import top.infopub.mgr.mkt.vo.SetupProVo;
import top.infopub.model.common.MktSetupProInfo;
import top.infopub.model.mkt.SetupPro;

import java.util.List;

/** 立项(MKT_SETUP_PRO) **/
public interface SetupProDao extends GenericDao<SetupPro, String> {

    /**
     * 根据条件查询立项记录
     * @param collectProjectVo
     * @return
     * @see
     */
    Page<ProjectDomain> selectByDomainWhere(CollectProjectVo collectProjectVo);

    /**
     * 根据条件查询立项-我审批的记录
     * @param setupProVo
     * @return
     * @see
     */
    Page<SetupProDomain> selectMyCheckByDomainWhere(SetupProVo setupProVo);

    /**
     * 新增立项
     * @param setupPro
     * @see
     */
    void insertById(SetupPro setupPro);

    /**
     * 根据立项id查询详情
     * @param id 主键id
     * @return
     * @see
     */
    SetupProVo selectById(String id);

    /**
     * 查询可新建资格预审的立项记录
     * @return
     * @see
     */
    List<SetupPro> selectUsableSetupPro();

    /**
     * 根据项目编号查询是否已存在（processStatus in ('1','9')）
     * @param proCode 项目编号
     * @return
     * @see
     */
    List<SetupPro> selectByProCode(String proCode);

    /**
     * 立项详情基础信息联合查询
     * @param id
     * @return
     */
    PlotDetailDto queryUnionDetailById(@Param("id") String id);

    /**
     * 修改立项信息
     * @param setupPro
     */
    void modifySetupProById(SetupPro setupPro);

    /**
     * 修改立项审核信息
     * @param setupPro
     */
    void modifySetupProProcess(SetupPro setupPro);

    /**
     * 预立项流程审核通过新增立项数据
     * @param setupPro
     */
    void insertByProcess(SetupPro setupPro);

    /**
     * 查询市场立项通过的项目基础信息-公共
     * @return 返回proCode和proName
     */
    List<MktSetupProInfo> queryPublicProInfo();

    /**
     * 获取项目预结算项目列表
     * @return
     */
    List<MktSetupProInfo> getProjectBudgetMktList();
}
